<?php

Class SeguradoraDAO {
    
    public function pegarIdSeguradora($nomeSeguradora) {
        
        try {
            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT *  FROM `seguradora` WHERE nome LIKE '%" . $nomeSeguradora . "%'
            ");
            //SELECT *  FROM `seguradora` WHERE `id` = 1 AND `shadow` = 0
                        
            $num = count($result);
            if ($num == 0) {                
                $seguradora = false;                
            } else {
                $seguradora = new Seguradora();
                foreach ($result as $value) {
                    $seguradora->setIdSeguradora($value['id']);
                    $seguradora->setSeguradora($value['nome']);
                    $seguradora->setTaxaLiquida($value['comissao_corretora']);
                    $seguradora->setPrimeiraTaxa($value['comissao_produtor1x4']);
                    $seguradora->setSegundaTaxa($value['comissao_produtor5x7']);
                    $seguradora->setTerceiraTaxa($value['comissao_produtor8x10']);
                    $seguradora->setStatus($value['status']);
                }
            }

            $conn = $conexao->fecharConexao();
            return $seguradora;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }
    
    public function pesquisarSeguradora($tipo_pesquisa ,$pesquisa_seguradora){
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT * 
                FROM `seguradora` 
                WHERE `shadow` = 0
                AND ". $tipo_pesquisa ." LIKE '%" . $pesquisa_seguradora . "%'
            ");

            $seguradora = array();
            $count = 0;

            foreach ($result as $value) {

                //Recupera valores dos seguros
                $seguradora[$count] = new Seguradora();
                $seguradora[$count]->setIdSeguradora($value['id']);
                $seguradora[$count]->setSeguradora($value['nome']);
                $seguradora[$count]->setTaxaLiquida($value['comissao_corretora']);
                $seguradora[$count]->setPrimeiraTaxa($value['comissao_produtor1x4']);
                $seguradora[$count]->setSegundaTaxa($value['comissao_produtor5x7']);
                $seguradora[$count]->setTerceiraTaxa($value['comissao_produtor8x10']);
                $seguradora[$count]->setStatus($value['status']);
                $count++;
            }

            $conn = $conexao->fecharConexao();
            return $seguradora;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }

    public function listarSeguradoras() {

        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT * 
                FROM `seguradora` 
                WHERE `shadow` = 0
            ");

            $seguradora = array();
            $count = 0;

            foreach ($result as $value) {

                //Recupera valores dos seguros
                $seguradora[$count] = new Seguradora();
                $seguradora[$count]->setIdSeguradora($value['id']);
                $seguradora[$count]->setSeguradora($value['nome']);
                $seguradora[$count]->setTaxaLiquida($value['comissao_corretora']);
                $seguradora[$count]->setPrimeiraTaxa($value['comissao_produtor1x4']);
                $seguradora[$count]->setSegundaTaxa($value['comissao_produtor5x7']);
                $seguradora[$count]->setTerceiraTaxa($value['comissao_produtor8x10']);
                $seguradora[$count]->setStatus($value['status']);
                $count++;
            }

            $conn = $conexao->fecharConexao();
            return $seguradora;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function selecionarSeguradora($idSeguradora) {

        try {
            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT * 
                FROM `seguradora` 
                WHERE `shadow` = 0 AND id = " . $idSeguradora . " 
            ");
            //SELECT *  FROM `seguradora` WHERE `id` = 1 AND `shadow` = 0

            $num = count($result);
            if ($num == 0) {
                
                $seguradora = false;
                
            } else {
                $seguradora = new Seguradora();
                foreach ($result as $value) {
                    $seguradora->setSeguradora($value['nome']);
                    $seguradora->setTaxaLiquida($value['comissao_corretora']);
                    $seguradora->setPrimeiraTaxa($value['comissao_produtor1x4']);
                    $seguradora->setSegundaTaxa($value['comissao_produtor5x7']);
                    $seguradora->setTerceiraTaxa($value['comissao_produtor8x10']);
                    $seguradora->setStatus($value['status']);
                }
            }

            $conn = $conexao->fecharConexao();
            return $seguradora;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function cadastrarSeguradora(Seguradora $seguradora) {

        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
                INSERT INTO seguradora (id, nome, comissao_corretora,
                comissao_produtor1x4, comissao_produtor5x7, comissao_produtor8x10,
                status, shadow) 
                VALUES (NULL, ?, ?, ?, ?, ?, 'ATIVADO', 0);
            ";

            //Cadastro
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($seguradora->getSeguradora()));
            $stmt->bindValue(2, $seguradora->getTaxaLiquida());
            $stmt->bindValue(3, $seguradora->getPrimeiraTaxa());
            $stmt->bindValue(4, $seguradora->getSegundaTaxa());
            $stmt->bindValue(5, $seguradora->getTerceiraTaxa());
            $stmt->execute();

            $conn = $conexao->fecharConexao();
            return true;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
    }

    public function editarSeguradora($idSeguradora, Seguradora $seguradora) {

        try {
            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
            UPDATE seguradora 
            SET nome = ?, comissao_corretora = ?, comissao_produtor1x4 = ?, 
            comissao_produtor5x7 = ?, comissao_produtor8x10 = ?, status = ? 
            WHERE seguradora.id = ?;
        ";

            //Editar
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($seguradora->getSeguradora()));
            $stmt->bindValue(2, $seguradora->getTaxaLiquida());
            $stmt->bindValue(3, $seguradora->getPrimeiraTaxa());
            $stmt->bindValue(4, $seguradora->getSegundaTaxa());
            $stmt->bindValue(5, $seguradora->getTerceiraTaxa());
            $stmt->bindValue(6, $seguradora->getStatus());
            $stmt->bindValue(7, $idSeguradora);
            $stmt->execute();

            $conn = $conexao->fecharConexao();
            return true;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
    }

    public function excluirSeguradora($idSeguradora) {

        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
                UPDATE seguradora
                SET status = 'DESATIVADO', shadow = 1 
                WHERE seguradora.id = ?;
            ";
            
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, $idSeguradora);
            $stmt->execute();
            
            $conexao->fecharConexao();
            return true;
            
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

}

?>
